home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
tools
/
czesc_2
/
life
/
life.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-12
|
3KB
|
122 lines
/*
* LIFECYCLES.C -- compute a lifecycles GNUPLOT file
*
* (c)Copyright 1992-93 by Tobias Ferber, All Rights Reserved
*/
#include <exec/types.h>
#include <stdio.h>
#include "idate.h"
static char rcs_id[]= "$VER: $Id: life.c,v 1.3 93/01/14 18:02:52 tf Exp $";
static char *dname[]= { "Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday" };
static char *mname[]= { "January","February","March","April","May","June","July",
"August","September","October","November","December" };
/*
static char *dname[]= { "Sonntag","Montag","Dienstag","Mittwoch",
"Donnerstag","Freitag","Samstag","Sonntag" };
static char *mname[]= { "Januar","Februar","März","April","Mai","Juni","Juli",
"August","September","Oktober","November","Dezember" };
*/
/* GNUPLOT output format */
static char *pltfmt[2] = {
"set grid\n"
"set dummy t\n"
"set format x \"%%g\"\n"
"k=23\n"
"s=28\n"
"g=33\n"
"f=38\n"
"n=%d\n"
"tmax=%d\n"
"set title \"%s\"\n"
"set ylabel \"phase\"\n"
"set xlabel \"days\"\n"
"set yrange [-1.5:1.5]\n"
"set ytics (\"low\" -1,\"critical\" 0.,\"high\" 1)\n"
"set xrange [0.:tmax-1]\n",
/* --- we'll insert the xtics here --- */
"bio(t,r)=sin((t+n%r)*(2*pi/r))\n"
"plot bio(t,k) title \"male\",\\\n"
" bio(t,s) title \"female\",\\\n"
" bio(t,g) title \"intellect\",\\\n"
" bio(t,f) title \"feeling\""
};
static char *texfmt[2]= {
"\\begin{center}\\begin{tabular}{rrlrrrr}\n"
"\\hline\n"
"\\multicolumn{3}{r}{Completed periods} & %d & %d & %d & %d\\\\\n"
"\\hline\n"
"\\multicolumn{2}{c}{Date}&{\\tt MFIS} & M & F & I & S\\\n"
"\\hline\n",
/* --- we'll insert the data here --- */
"\\hline\n"
"\\end{tabular}\\end{center}\n"
};
#define _k 23
#define _s 28
#define _g 33 /* period: (23*28*33)d = approx. 58a */
#define _f 38 /* period: (23*28*33*38)/2 = 403788d (approx. 1105.5a) */
void print_xtics(int n)
{ static int tics[31]= { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
int c,t;
for(c=0;c<=8;c++)
{ t=(c*_k+2)/4-(n%_k); if(0<=t && t<31) ++tics[t];
t=(c*_s+2)/4-(n%_s); if(0<=t && t<31) ++tics[t];
t=(c*_g+2)/4-(n%_g); if(0<=t && t<31) ++tics[t];
t=(c*_f+2)/4-(n%_f); if(0<=t && t<31) ++tics[t];
}
printf("set xtics ");
for(c=t=0;t<31;t++)
{ if(tics[t]>0)
{ printf("%c \"%d\" %d",(c>0)? ',' : '(',t+1,t);
if(((++c)%8)==0) printf("\\\n ");
}
}
printf(")\n");
}
void main(int argc, char *argv[])
{
static char title[256];
int d,m,y; /* birthday */
int mm,yy; /* month to plot */
int n; /* age in days */
if(argc<3)
{ puts(&rcs_id[6]);
puts("(c)Copyright 1992-93 by Tobias Ferber, All Rights Reserved\n"
"LIFE <ddmmyyyy> <mmyyyy> [ > gnuplot file ]");
exit(0);
}
sscanf(argv[1],"%2d%2d%4d",&d,&m,&y);
sscanf(argv[2],"%2d%4d",&mm,&yy);
if(checkdate(d,m,y)==0)
{ fprintf(stderr,"Illegal date: %02d.%02d.%04d\n",d,m,y);
exit(5);
}
if(checkdate(1,mm,yy)==0)
{ fprintf(stderr,"Illegal date: 01.%02d.%04d\n",mm,yy);
exit(5);
}
n=dayrange(d,m,y, 1,mm,yy);
puts("# LIFECYCLES: GNUPLOT file");
sprintf(title,"*%s, %d.%d.%d Lifecycles for %s %d",
dname[wday(d,m,y)],
d,m,y,
mname[mm-1],yy );
printf(pltfmt[0],n,monlen(mm,yy),title);
print_xtics(n);
puts(pltfmt[1]);
exit(0);
}